home *** CD-ROM | disk | FTP | other *** search
- 10 REM "1764SQUARES" (REALLY RECTANGLES)
- 20 REM A SIMPLE BASIC PROGRAM TO GENERATE 16 HIGH-RESOLUTION SCREENS AND SAVE
- 30 REM THEM TO THE 1764 RAM EXPANSION.
- 40 REM AFTER ALL 16 SCREENS HAVE BEEN SAVED THEY ARE CYCLED THROUGH ENDLESSLY.
- 50 REM %%%WRITTEN WITH CRIBBING FROM THE PROGRAMMER'S REFERENCE GUIDE, 1764
- 60 REM MANUAL AND THE "GLOBE" DEMO PROGRAM
- 110 GOSUB 1000
- 200 GOSUB 2000
- 300 GOTO 5000
- 400 STOP
- 1000 REM INITIALIZE BIT-MAP MODE & REC CONTROLLER POSITION
- 1010 : BASE=2*4096:BSIZE=8000:REM SET BASE AND SIZE OF BIT MAP
- 1020 : CLOUR=1024:CSIZE=1024:REM SET BASE AND SIZE OF COLOR MAP
- 1025 : CSIZE=1024:REM SET BASE AND SIZE OF COLOR MAP
- 1050 : R=13*4096+15*256:REM REC CONTROLLER
- 1060 : DIM LC(16),HC(16),BC(16),LB(16),HB(16),BB(16):REM SET DIMENSIONS
- 1070 RETURN
- 2000 REM GENERATE SQUARES
- 2010 : FOR I=1 TO 16 STEP 1:REM SIXTEEN SQUARES
- 2015 : GOSUB 6000
- 2020 : FOR J=BASE TO BASE+BSIZE-1 STEP 1:POKE J,0:NEXT J:REM CLEAR BIT MAP
- 2030 : FOR J=CLOUR TO CLOUR+CSIZE-1 STEP 1
- 2040 : IF(I=1)THEN POKE J,16
- 2050 : IF(I<>1)THEN POKE J,I-1
- 2060 : NEXT J:REM CHANGE COLORS FOR EACH SQUARE
- 2070 : Y1=99-(200*5*I)/360:Y2=99+(200*5*I)/360
- 2080 : FOR X=159-5*I TO 159+5*I STEP 1
- 2090 : CH=INT(X/8)
- 2100 : RO=INT(Y1/8)
- 2110 : LN=Y1 AND 7
- 2120 : BI=7-(X AND 7)
- 2130 : GOSUB 3000
- 2140 : RO=INT(Y2/8)
- 2150 : LN=Y2 AND 7
- 2160 : GOSUB 3000
- 2170 : NEXT X
- 2180 : X1=159-5*I:X2=159+5*I
- 2190 : FOR Y=99-(200*5*I)/360 TO 99+(200*5*I)/360 STEP 1
- 2200 : CH=INT(X1/8)
- 2210 : RO=INT(Y/8)
- 2220 : LN=Y AND 7
- 2230 : BI=7-(X1 AND 7)
- 2240 : GOSUB 3000
- 2250 : CH=INT(X2/8)
- 2260 : BI=7-(X2 AND 7)
- 2270 : GOSUB 3000
- 2280 : NEXT YH(null): K=I:GOSUB 4000
- 2300 : NEXT I
- 2320 RETURN
- 3000 REM TURN BITS ON
- 3010 : BY=BASE+320*RO+8*CH+LN
- 3020 : POKE BY,PEEK(BY) OR (2^BI)
- 3030 RETURN
- 4000 REM SAVE DATA TO RAM EXPANSION
- 4020 : Z=(K-1)*CSIZE
- 4030 : B=INT(Z/65536):H=INT((Z-65536*B)/256):L=Z-65536*B-256*H
- 4040 : LC(K)=L:HC(K)=H:BC(K)=B:REM SAVE COLOR MAPS IN FIRST BANK OF RAM
- 4050 : POKE R+2,0:POKE R+3,4:REM C64 COLOR MAP
- 4060 : POKE R+4,LC(K):POKE R+5,HC(K):POKE R+6,BC(I):REM EXPANSION ADDR&BANK
- 4070 : POKE R+7,0:POKE R+8,4:REM NUMBER OF BYTES TRANSFERRED
- 4080 : POKE R+9,0:POKE R+10,0:REM RESET INTERRUPTS AND INCREMENT REGISTERS
- 4090 : POKE R+1,176:REM SAVE TO EXPANSION
- 4100 : Z=65536+(K-1)*BSIZE
- 4110 : B=INT(Z/65536):H=INT((Z-65536*B)/256):L=Z-65536*B-256*H
- 4120 : LB(I)=L:HB(I)=H:BB(I)=B:REM SAVE BIT M BI\N HIGHER BANKS OF RAM
- 4130 : POKE R+2,0:POKE R+3,32:REM C64 BMM LOCATION
- 4140 : POKE R+4,LB(I):POKE R+5,HB(I):POKE R+6,BB(I):REM EXPANSION ADDR&BANK
- 4150 : POKE R+7,BSIZE AND 255:POKE R+8,BSIZE/256:REM NUMBER OF BYTES TRANSFER
- 4160 : POKE R+9,0:POKE R+10,0:REM RESET INTERRUPTS AND INCREMENT REGISTERS
- 4170 : POKE R+1,176:REM SAVE TO EXPANSION
- 4200 : POKE 53265, PEEK(53265) AND 223
- 4210 : POKE 53272, PEEK(53272) AND 247
- 4220 : PRINT CHR$(147)+"COLOR: BANK",BC(K)," POINT",HC(K),LC(K)
- 4230 : PRINT "BMM: BANK",BB(K),"POINT",HB(K),LC(K)
- 4280 : PRINT "SCREEN ",K," SAVED"
- 4290 : FOR J=1 TO 1000 STEP 1:NEXT J:REM SHORT DELAYHS$RETURN
- 5000 REM GET DATA FROM RAM EXPANSION TO SCREEN
- 5005 : GOSUB 6000
- 5030 : FOR J=0 TO 1 STEP 0
- 5040 : FOR I=1 TO 16 STEP 1
- 5050 : POKE R+2,0:POKE R+3,4: REM CPU ADDRESS FOR COLOR MAP
- 5060 : POKE R+4,LC(I):POKE R+5,HC(I):POKE R+6,BC(I):REM EXPANSION ADD&BK
- 5070 : POKE R+7,0:POKE R+8,4:REM NUMBER OF BYTES TRANSFERRED
- 5080 : POKE R+9,0:POKE R+10,0:REM RESET INTERRUPTS AND INAND 2T REG.'S
- 5090 : POKE R+1,177: REM TRANSFER TO COLOR MAP
- 5100 : POKE R+2,0:POKE R+3,32:REM C64 BMM LOCATION
- 5110 : POKE R+4,LB(I):POKE R+5,HB(I):POKE R+6,BB(I):REM EXPAN ADDR&BANK
- 5120 : POKE R+7,BSIZE AND 255:POKE R+8,BSIZE/256:REM NUMBER OF BYTES TR
- 5130 : POKE R+9,0:POKE R+10,0: REM RESET INTERRUPTS AND INAND 2NT REG.'S
- 5140 : POKE R+1,177:REM TRANSFER TO BMM
- 5150 : FOR K=1 TO 1000 STEP 1:REM SHORT DELAYH[(: NEXT I
- 5170 : NEXT J
- 5900 STOP
- 6000 REM CLEAR SCREEN AND SET HIGH RESOLUTION
- 6010 : PRINT CHR$(147)
- 6020 : POKE 53272,PEEK(53272) OR 8:REM BIT-MAP LOCATION
- 6030 : POKE 53265,PEEK(53265) OR 32:REM ENTER BIT MAP
- 6040 RETURN
-